/**
 * 
 */
package sv.gob.mh.dgii.model;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.AttributeOverride;
import javax.persistence.AttributeOverrides;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 * @author melvin.henriquez
 * 
 */
@Entity
@Table(name = "DV_PAGO_INDEB_DET", schema = "DEVOLUCIONES")
public class DvPagoIndebDet implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 4401177315839482542L;
	private DvPagoIndebDetId id;
	private Date fpagoExceso;
	private Date fdecMod;
	private Double vimpaPagar;
	private Double vimpPagado;
	private Double vdifImpuesto;
	private DvPagoIndeb dvPagoIndeb;

	public DvPagoIndebDet() {
		// TODO Auto-generated constructor stub
	}

	public DvPagoIndebDet(DvPagoIndebDetId id, Date fpagoExceso, Date fdecMod, Double vimpaPagar,
			Double vimpPagado, Double vdifImpuesto) {
		this.id = id;
		this.fpagoExceso = fpagoExceso;
		this.fdecMod = fdecMod;
		this.vimpaPagar = vimpaPagar;
		this.vimpPagado = vimpPagado;
		this.vdifImpuesto = vdifImpuesto;
	}

	/**
	 * @return the id
	 */
	@EmbeddedId
	@AttributeOverrides( {
			@AttributeOverride(name = "iindice", column = @Column(name = "I_INDICE", nullable = false, precision = 18, scale = 0)),
			@AttributeOverride(name = "ncorrelativo", column = @Column(name = "N_CORRELATIVO", nullable = false, precision = 18, scale = 0)) })
	public DvPagoIndebDetId getId() {
		return id;
	}

	/**
	 * @param id
	 *            the id to set
	 */
	public void setId(DvPagoIndebDetId id) {
		this.id = id;
	}

	/**
	 * @return the fpagoExceso
	 */
	@Temporal(TemporalType.TIMESTAMP)
	@Column(insertable = true, name = "F_PAGO_EXCESO", length = 7, updatable = true)
	public Date getFpagoExceso() {
		return fpagoExceso;
	}

	/**
	 * @param fpagoExceso
	 *            the fpagoExceso to set
	 */
	public void setFpagoExceso(Date fpagoExceso) {
		this.fpagoExceso = fpagoExceso;
	}

	/**
	 * @return the fdecMod
	 */
	@Temporal(TemporalType.TIMESTAMP)
	@Column(insertable = true, name = "F_DEC_MOD", length = 7, updatable = true)
	public Date getFdecMod() {
		return fdecMod;
	}

	/**
	 * @param fdecMod
	 *            the fdecMod to set
	 */
	public void setFdecMod(Date fdecMod) {
		this.fdecMod = fdecMod;
	}

	/**
	 * @return the vimpaPagar
	 */
	@Column(name = "V_IMP_A_PAGAR", nullable = true, precision = 12, scale = 2)
	public Double getVimpaPagar() {
		return vimpaPagar;
	}

	/**
	 * @param vimpaPagar
	 *            the vimpaPagar to set
	 */
	public void setVimpaPagar(Double vimpaPagar) {
		this.vimpaPagar = vimpaPagar;
	}

	/**
	 * @return the vimpPagado
	 */
	@Column(name = "V_IMP_PAGADO", nullable = true, precision = 12, scale = 2)
	public Double getVimpPagado() {
		return vimpPagado;
	}

	/**
	 * @param vimpPagado
	 *            the vimpPagado to set
	 */
	public void setVimpPagado(Double vimpPagado) {
		this.vimpPagado = vimpPagado;
	}

	/**
	 * @return the vdifImpuesto
	 */
	@Column(name = "V_DIF_IMPUESTO", nullable = true, precision = 12, scale = 2)
	public Double getVdifImpuesto() {
		return vdifImpuesto;
	}

	/**
	 * @param vdifImpuesto
	 *            the vdifImpuesto to set
	 */
	public void setVdifImpuesto(Double vdifImpuesto) {
		this.vdifImpuesto = vdifImpuesto;
	}

	/**
	 * @return the dvPagoIndeb
	 */
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "I_INDICE", nullable = false, insertable = false, updatable = false)
	public DvPagoIndeb getDvPagoIndeb() {
		return dvPagoIndeb;
	}

	/**
	 * @param dvPagoIndeb
	 *            the dvPagoIndeb to set
	 */
	public void setDvPagoIndeb(DvPagoIndeb dvPagoIndeb) {
		this.dvPagoIndeb = dvPagoIndeb;
	}
}
